package com.leetcode;

import com.leetcode.common.TreeNode;

/**
 * 111. 二叉树的最小深度
 * 深度优先搜索, 优化一点点的写法
 *
 * @author fy
 * @date 2022-04-17 16:19
 */
public class Solution111_1 {

    public int minDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        // 如果左子树为null， 右子树还是有高度的
        if (root.left == null) {
            return minDepth(root.right) + 1;
        }
        // 如果右子树为null， 左子树还是有高度的
        if (root.right == null) {
            return minDepth(root.left) + 1;
        }
        // 要左右子树同时为空，才能认为到这个节点的高度才是一个正确的定义树的高度
        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }

}
